Qwen1.5-MoE模型:2.7B的激活参数量达到7B模型的性能
Qwen1.5-MoE模型:2.7B的激活参数量达到7B模型的性能
写在前面
今天阿里放了MOE的模型,总参数量14.3B,具有64个专家,每次激活8个,在仅激活2.7B参数情况下,效果可以与Qwen1.5-7B模型媲美,并且训练陈本降低75%,推理速度提升1.74倍。同时阿里开源了Base版本模型和Chat版本模型。
博客:https://qwenlm.github.io/zh/blog/qwen-moe/
HF:https://huggingface.co/Qwen/Qwen1.5-MoE-A2.7B
HF:https://huggingface.co/Qwen/Qwen1.5-MoE-A2.7B-Chat
注意:以下内容来自参考Qwen官方博客。
模型结构
与Mistral-MOE配置8个专家采用Top-2门控策略选择专家不同,主要进行以下改进:
细粒度专家细分:将一个完整的FFN拆分成数个部分,每一部分作为一个独立的专家。 模型初始化优化:利用Qwen-1.8B模型初始化Qwen1.5-MoE-A2.7B参数,并在在初始化阶段引入了随机参数,不仅加速了模型的收敛速度,还提升了预训练过程中整体性能。 共享路由机制:实现共享专家与路由专家的融合,模型始终存在4个共享专家处于激活状态,并从剩余的60个路由专家中选择激活的4个专家。
实验效果
在MMLU、GSM8K、HumanEval和Multilingual榜单上评论了Qwen1.5-MoE-A2.7B模型的语言理解、数学、代码和多语言能力。在MT-Bench榜单上测试了Chat模型的能力。发现Qwen1.5-MoE-A2.7B效果可以媲美最佳的7B模型。
尽管MOE模型的总参数了较大,但实际激活参数远小于7B模型,并由于初始化方法无需过多数据进行模型训练,从而显著降低了模型75%的训练成本。
并且在A100-80G显卡上,利用vllm框架测试Qwen1.5-7B和Qwen1.5-MoE-A2.7B模型的推理性能,保持输入输出token均为1k情况下,具体TPS如下,可以发现Qwen1.5-MoE-A2.7B模型与Qwen1.5-7B模型相比,推理速度提高了约1.74倍。
模型推理
利用transformers进行Qwen1.5-MoE-A2.7B模型推理如下所示:
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda" # the device to load the model onto
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen1.5-MoE-A2.7B-Chat",
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen1.5-MoE-A2.7B-Chat")
prompt = "Give me a short introduction to large language model."
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)
generated_ids = model.generate(
model_inputs.input_ids,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
写在最后
开源的MOE模型越来越多,最近老马的Grok-1模型是MOE,DBRX的132B模型也是MOE,今天千问也开源了MOE。
但总觉得如论MOE模型有些投机取巧的意味,狗头保命。
PS:给公众号添加【星标⭐️】不迷路!您的点赞、在看、关注是我坚持的最大动力!
欢迎多多关注公众号「NLP工作站」,加入交流群,交个朋友吧,一起学习,一起进步!
我们的口号是“生命不止,学习不停”!
往期推荐:
RAG与Long-Context之争—没必要争 角色扮演大模型的碎碎念 自我蒸馏方法-减轻大模型微调过程中的灾难性遗忘 Yi技术报告细节分享 大模型增量预训练新技巧-解决灾难性遗忘 如何提高LLMs的文本表征(Text Embedding)能力? DEITA-大模型指令微调的数据高效筛选方法 大模型微调技巧 | 高质量指令数据筛选方法-MoDS 辟谣!微软撤回声称ChatGPT为20B参数的论文,并给出解释。 如何看待微软论文声称 ChatGPT 是 20B (200亿) 参数量的模型? 大模型微调技巧-在Embeeding上加入噪音提高指令微调效果 如何从数据集中自动识别高质量的指令数据 BaiChuan2技术报告细节分享&个人想法 大模型LLM微调经验总结&项目更新 打造LLM界的Web UI 是我们在训练大模型,还是大模型在训练我们? Llama2技术细节&开源影响 大模型时代-行业落地再思考 垂直领域大模型的一些思考及开源模型汇总 如何评估大模型-LLMs的好坏? 总结|Prompt在NER场景的应用